package com.firefly.admin.config.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.firefly.admin.common.vo.Result;
import com.firefly.admin.config.entity.FySystemDictionaryItem;
import com.firefly.admin.config.vo.SystemDictionaryItemQueryVo;

import java.util.List;

public interface FySystemDictionaryItemService {

    /**
     * 通过字典CODE获取字典项目列表
     *
     * @param dictionaryCode 字典CODE
     * @return 字典项目列表
     */
    List<FySystemDictionaryItem> getItemByCode(String dictionaryCode);

    /**
     * 分页查询系统字典项目接口
     *
     * @param systemDictionaryItemQueryVo 系统字典项目查询条件
     * @return 字典项目信息列表
     */
    Result<Page<FySystemDictionaryItem>> getSystemDictionaryItemList(SystemDictionaryItemQueryVo systemDictionaryItemQueryVo);

    /**
     * 系统字典项目新增接口
     *
     * @param fySystemDictionaryItem 系统字典项目信息
     * @return 新增结果
     */
    Result<FySystemDictionaryItem> add(FySystemDictionaryItem fySystemDictionaryItem);

    /**
     * 系统字典项目编辑接口
     *
     * @param fySystemDictionaryItem 系统字典项目信息
     * @return 编辑结果
     */
    Result<FySystemDictionaryItem> update(FySystemDictionaryItem fySystemDictionaryItem);

    /**
     * 系统字典项目删除接口
     *
     * @param itemId 字典项目ID
     * @return 删除结果
     */
    Result<String> delete(Long itemId);

    /**
     * 通过字典ID删除字典项
     *
     * @param dictionaryId 字典ID
     */
    void deleteByDictionaryId(Long dictionaryId);

    /**
     * 系统字典项目值校验接口
     *
     * @param itemValue 字典项目值
     * @param itemId    字典项目ID
     * @return 校验结果
     */
    Result<String> itemValueCheck(String itemValue, Long itemId, Long dictionaryId);

    /**
     * 通过字典编码获取字典项目列表接口
     *
     * @param dictionaryCode 字典编码
     * @return 校验结果
     */
    Result<List<FySystemDictionaryItem>> getDictionaryItemByCode(String dictionaryCode);


    /**
     * 通过字典ID获取字典项列表
     *
     * @param dictionaryId 字典ID
     * @return 字典项列表
     */
    List<FySystemDictionaryItem> findByDictionaryId(Long dictionaryId);
}
